1. Field of the Invention
The present invention relates generally to a storage subsystem connected to a host computer, and more particularly to an external storage sub-system having a fast data transfer capability for multiple sequential data reading.
2. Description of the Related Art
In a conventional external storage sub-system that restores data using redundant data, if data read from a data recording medium to a cache memory (xe2x80x9cstagingxe2x80x9d) has failed, reliability of the data read can be improved by thereafter staging redundant data and other data required to restore the data, followed by the actual restoring of the data and transfer to a host unit. The entire restoring procedure, however, requires additional time over that of a normal staging procedure.
For example, the response time for a normal staging can be expressed as follows:
Response time in normal staging=concerned data staging time+data transfer time+other processing time. 
By comparison, when staging has failed, the response time, including the restoring of data, may be expressed as follows:
Response time in failed staging=concerned data staging time+redundant data staging time+data transfer+data restoring time+other processing time. 
Therefore, the response time in failed staging is longer than that in normal staging.
A RAID (Redundant Array of Inexpensive Disks) system is a known example of an external storage sub-system which restores data by using redundant data. The conventional RAID system reads data from external storage until the occurrence of a failure, which is determined by a timer timing out (that is, a threshold time period elapses before the end of which the required data has not been read from the external storage). When a failure occurs, the conventional RAID system executes a redundant data restoration process in which an entire xe2x80x9cstripexe2x80x9d constituted by redundant data stored in parallel storage units, combined with parity data, is read and used to recreate the data that failed to be read in the primary data read. The RAID system works effectively for recovering data that was not properly read, but additional time is required to perform the data restoration. During the restoration time period, the data read operation is interrupted.
A disk array device which can restore data and store it in a spare recording medium with no processing delay from a host unit by properly recognizing the necessity of restoring the data is disclosed in Japanese Patent Unexamined Publication No. 7-200191. However, this disk array device does not consider to speed up input/output processing when staging has failed.
Another feature of the conventional external storage subsystem is the capability to pre-read data in order to speed up reading of sequential data, such as in video-on-demand (VOD). By transferring data from the low-speed recording medium to the higher-speed cache memory before the host unit demands the data (pre-read processing), data demand from the host unit is performed by simply transferring data from the high-speed cache memory. Therefore, faster processing is possible.
In the conventional external storage sub-system, in the case of a single sequential read demand, pre-read processing is executed when the system judges that the sequential read demand must be received from the host unit, which judgment is made based on the receipt of read demands to successive data or several read demands to the same data area. For multiple sequential read demands, plural information sets required for the sequential decision are provided, and pre-read processing is executed in xe2x80x9cmultiple modexe2x80x9d to obtain high-speed processing. However, the conventional art has not considered to reduce the processing time required for the sequential decision, or to eliminate the limit on the degree of multiple pre-read processings required by the number of information sets provided for the sequential decision. The limit on the degree of multiple pre-read processings is typically one logic unit, or the size of the memory used for remembering the sequential addresses in an information set.
With the recent emphasis on an information-oriented society, there has been a concurrent increase in the requirement for dealing with multimedia data in storage systems. Particularly, in systems that deal with image and sound data, such as a video-on-demand system, or in the transfer of image/sound data over the Internet, a server typically reads out a large amount of image/sound data from a data storage device, and supplies the data to one or more clients. Delay in the reading of data, however, causes disruption and delay of the image/sound data delivery. Therefore, the storage devices must be optimized to assure minimum response time. However, prior systems have emphasized memory efficiency over response time, particularly in prior RAID systems, due to the prohibitive cost of expanding memory capacity in large-capacity storage sub-systems.
Moreover, when the image/sound data to be transferred is generally sequential data, it is desirable for the data to be transferred as seamlessly as possible, with the capability to transfer the data in either the forward or backward directions, or in both the forward and backward directions. Furthermore, in a network environment, it would be desirable for such systems to permit frequent access by many clients simultaneously, which renders indispensable the execution of many sequential read accesses at the same time.
However, in the conventional external storage sub-system, a single sequential read demand has often been processed by first starting pre-read processing of successive data when several data read demands to successive data or to the same data area have been received, or, in the case of multiple sequential read demands, by providing plural information sets required for the sequential decision, and executing multiple pre-reading. However, the degree of multiple pre-reading is restricted to the number of information sets provided, and performance is deteriorated when the limit is exceeded. Performance is also deteriorated by the amount of overhead required for sequential decision processing, according to the conventional systems.
It is thus an object of the present invention to provide a storage sub-system which can respond quickly to data read requests, even when the data read has failed, and to improve the processing capability of single or multiple sequential data reading in the forward/backward directions. It is another object of the invention to eliminate restrictions on multiple degrees of sequential reading.
To achieve these and other objects of the invention, a storage sub-system according to the present invention provides a staging control information table which can be used to specify the nature of data read out from a recording medium to a staging area in the cache memory. When a read demand is received, such as from a host unit, the data transfer means of the invention determines the staging area to be transferred from the recording medium to the cache memory according to a specification indicated in the staging control information table, according to a user or internally by a control means. Then, the staging process is executed. The staging control information table indicates whether redundant data required for data restoration is being staged, whether a pre-read staging of successive data is being executed, the direction of pre-reading (forward, backwards, or both), and the data volume of pre-reading. The contents of the staging control information table can be specified and changed through an interface with the host unit, or by a user via an interface built into the storage sub-system or connected to the storage sub-system externally. By this latter means, the user can change the staging area according to the read demand characteristics of the system with which the storage subsystem operates.
When a read demand is received from the host unit, and the staging control information table indicates that redundant data staging is to be executed, the data transfer means executes staging of the redundant data together with the data to be read to the cache memory. Thus, even when the data read has failed, since the data can be restored with the redundant data that has been transferred to the cache memory, the response time can be improved over the conventional method of restoring data when a data read has failed. According to the invention, the response time is improved as follows:
Response time before improvement=data staging time+redundant data staging time+data transfer time+data restoring time+other time; 
Response time after improvement=data staging time+data transfer time+data restoring time+other time. 
Thus, the response time can be reduced so that the only additional time required over the successful data read response time is the data restoring time (that is, the time required for staging redundant data in the prior art is negligible).
Moreover, by instructing the execution of pre-read staging, direction of pre-reading, and volume of pre-read data on the staging control information table, when a read demand is received from the host unit, pre-read staging is executed in which forward/backward successive data to the data to be read (that is, the data immediately after/before the data to be read, in the case of sequential data) is read and stored in the cache memory. By this method, because no pre-read decision is necessary, the overhead required for decision is eliminated; therefore, sequential read processing can be performed more quickly. Further, information for making the pre-read decision is rendered unnecessary, and the prior art restriction degree of pre-reading caused by the number of pre-read information sets is also eliminated. Therefore, pre-read processing can be executed without restriction in multiple degrees.